package com.aos.dao;

import com.aos.dto.RoleDto;
import com.aos.entity.Role;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @ClassName RoleDao
 * @Description:角色
 * @Author wumingwang
 * @Date 2018/9/5 17:03
 * @Version 1.0
 */
public interface RoleDao {



    /**
     * 查询角色列表信息
     * @param map
     * @return
     */
    List<RoleDto> queryByPage(Map<String,Object> map);

    /**
     * 保存角色
     * @param role
     * @return
     */
    Integer insert(Role role);

    /**
     * 更新角色
     * @param role
     * @return
     */
    Integer update(Role role);

    /**
     * 删除角色
     * @param id
     * @return
     */
    Integer delete(Long id);

    /**
     * 查询重复角色
     * @param role
     * @return
     */
    RoleDto queryForCheckByNameAndAppId(Role role);

    /**
     * 查询角色详情
     * @param id
     * @return
     */
    RoleDto queryDetailsById(Long id);

    /**
     * 根据应用ID查询列表
     * @param appId
     * @return
     */
    List<RoleDto> queryListByAppId(Long appId);

    /**
     * 根据应用用户ID查询角色
     * @param appUserId
     * @return
     */
    List<RoleDto> queryListByAppUserId(Long appUserId);

    /**
     * 根据用户ID和应用ID查询角色列表
     * @param userId
     * @param applicationId
     * @return
     */
    List<RoleDto> queryRolesByAppAndUser(@Param("userId") Long userId, @Param("applicationId") Long applicationId);

    /**
     * 根据用户Id和应用code查询角色
     * @param id
     * @param appCode
     * @return
     */
    List<RoleDto> queryListByAppCodeUserId(@Param("userId") Long id, @Param("appCode") String appCode);
}
